home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS in a Box 7
/
BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso
/
Files
/
Hyper
/
Hyperj-Hz
/
HyperNotes.cpt
/
HyperNotes
next >
Wrap
Text File
|
1990-12-13
|
20KB
|
539 lines
WINDOID
Issue #3
The Publication for the Informed HyperCard User
Editor: David Leffler
Contents:
INTRODUCTION
EDITOR'S CHOICE
HYPERCARD USER TIPS
UNIVERSAL IMPORT BUTTON
WHOOPS!
THE FORM
In this third issue of WINDOID, we will continue to cover importing text into
HyperCard™. Gary Bond, one of Apple’s outstanding HyperCard test team members,
wrote a universal import button that takes into consideration nearly
everything. You can now create a button that imports MacWrite™, Microsoft
Word™, many database files, and even HyperCard stacks! We think you are going
to enjoy this.
Phil Wyman, another excellent Apple HyperCard tester, has provided us with more
of his highly acclaimed power-user tips and has taken a stab at explaining some
of the more interesting aspects of HyperCard properties.
In the two previous issues, there were some mistakes. I would like to apologize
for any inconvenience or frustration they might have caused and rectify them.
The errata will appear on page seven under WHOOPS. I generally get all the text
stuffed into the WINDOID newsletter moments before the Thursday meeting, and
sometimes I miss something. Many of the excellent scripters that avidly read
WINDOID have noticed my lapses and have provided me with needed repairs. For
their kind assistance, I offer my thanks.
WINDOID provides an opportunity for its readers to contribute to the ongoing
growth and excellence of HyperCard. With your assistance we can continue to
bring to HyperCard added depth and functionality. In the back of every issue
will be a form for you to keep by your Macintosh™. This form will allow you the
unique opportunity to participate directly in the continued development of
HyperCard.
We will read all the forms returned and address questions that are being asked
by HyperCard users. We will ask the team and provide you with an answer and
publish the answers in this newsletter. In this way we can gather information
and provide for your needs in future versions of HyperCard.
WINDOID is trying to make a difference in the way that you work with HyperCard.
We need your input. What sort of stacks are you using, what kinds of stacks
are you creating, and what are some of the joys and frustrations you are
experiencing. We really want to know!
If you have a bug, suggestion, comment, or just want to know the best way to do
something in HyperCard, you can fill out the form and send it to:
AHUG c/o David Leffler
Apple Computer, Inc.
MS/27-AQ
20525 Mariani Ave.
Cupertino, CA 95014
Or copy the format and Apple-Link™ it to: HYPERBUG$
EDITOR'S CHOICE
by David Leffler
At the last Apple HyperCard User Group meeting , Danny Goodman, author of The
Complete HyperCard Handbook, presented to an appreciative audience his
incredible business productivity stack Focal Point™. It will be released soon
by Activision™. We were all amazed at the incredible graphics and awesome
features he has scripted into it. Danny, as you might know, is not a programmer
and has always been frustrated by his inability to turn his ideas into
software. HyperCard has empowered him to not only turn his ideas into reality,
but to allow him the opportunity to share his ideas with the world. Thank you
Danny!
Amanda Goodenough, author of the Inigo and My Favorite Camel series of
wonderful adventures, was also on hand. Her obvious love of stories and great
presentation style captivated the audience. Amanda continues to enhance and
produce more of these non-textual stories and has graciously allowed us to
place them in an Amanda’s Stacks folder on the AHUG StackWare™ server. My
Favorite Camel is a favorite of mine, and I think everyone should see it and
share it with someone they love.
There are two other stacks on the StackWare™ server that also deserve serious
attention. The AIDS stack is a perfect representation of how HyperCard can be
used in an incredibly invocative eye and heart grabbing style. This stack is
not only visually and emotionally gripping, but is an excellent example of how
to use HyperCard as a powerful vehicle to move you through diverse information.
You should get this stack.
Finally, Tree Frog Studio software presents CheapSequencer. Tree Frog has
given us a music sequencer that must be seen and heard to be believed. These
innovative stackware developers are interested in entertaining us with great
graphics and functional stackware tools.
It’s stacks and people like these that really show the power and versatility of
HyperCard.
POWERUSERS TIPS
by Phil Wyman
1. If you get tired of pulling the Tools Windoid off of the menubar when you
need it, try Option-Tab, which will tear it off for you! Also, if the Tools
Windoid is in a paint tool, hitting Tab will tear off the Patterns Windoid.
2. If you have a line in your script that is longer than the editor window,
you can place an Option-Return at a space in the line to break it into two
smaller lines. The two lines will execute in the same way as the original
line. (Do not place the Option-Return into the middle of a quoted string.
Also, if you use the Option-Return in a comment, remember that every line of a
comment must start with a double hyphen!)
3. For those programmers out there who are used to “for next” loops, there is
a “next repeat” command in HyperTalk which works in a repeat loop a lot like a
“next” command in a “for next” loop. The “next repeat” command does not
execute anything that follows it in the repeat loop, but rather starts
executing at the beginning of the repeat loop.
Also, if you wish to exit the repeat loop altogether, without executing anymore
of the lines in the repeat loop, then use “exit repeat”.
Note:
If you want to exit the entire message handler from anywhere in the handler,
use “exit <handlername>” (i.e., “exit mouseup”).
If you wish to leave the handler but wish the current message to be sent on up
the hierarchical path from where it is now, then use “pass <handlername>”.
4. When concatenating two strings, you can add a space between the two
strings by using two ampersands “&&” instead of just one “&”.
5. A shorthand for “button” in HyperTalk is “btn”. A shorthand for
“background” is “bkgnd”.
6. You can copy buttons, fields, backgrounds or cards between stacks. This is
a very powerful feature of HyperCard.
7. For those of you with the regular size Mac Plus or Mac SE screens, try this
for a thrill:
Set loc of cardWindow to 10,50
You will see what people on large screens see all the time, a window title bar
which states the pathname of the window you are viewing. (To reset your
cardWindow, “Set loc of cardWindow to 0,0”.)
8. If you are in any tool other than the Browse tool, you can return to the
Browse tool by Command-Tab.
9. When you are in the Button tool, you can Command-Drag to create a new
button. Option-Drag on a button and you will drag a copy of the button.
10. A first attempt at a small treatise on the use of “the”,”of”, and “()” in
HyperTalk:
In general, either “the”, “of”, or parentheses () are required to signal
HyperTalk that a function or property is to be activated.
PROPERTIES:
With button, card, background, stack, and window properties, “the” is optional,
but you need “of”. Also, properties never have parentheses. You can say:
put hilite of button 1
put the hilite of button 1
Since there is no “of” to activate it, you cannot say:
put the hilite button 1
If you are using a global or painting property, you need “the”, since there is
no “of” to activate the property. For instance, you can say:
put the lockScreen
put the textAlign
However, you cannot put the property by saying:
put lockScreen
because HyperCard will think you are using lockScreen as a variable, not a
property.
FUNCTIONS:
Either “the”, “of”, or parentheses () are required with a function.
However, you cannot mix “the” with parentheses in a system function. For
instance, you cannot say:
put the charToNum(“a”)
You are allowed to say:
put the chartonum of “a
put chartonum(“a”)
put the chartonum of (“a”)
If a system function has more than one argument, it will always require
parentheses. For user-defined functions, you must always use parentheses, even
if there are no arguments—i.e., userFunction().
If a function does not use “of” or “()”, then “the” is required! For example,
“date” doesn’t work without “the”, since there is not an “of” or “()” to
activate the function. You can say:
put the date
But you cannot say:
put date
because HyperTalk will assume that “date” is a variable. This concept of
insisting on a “the” to activate the function allows for future expansion of
more system functions, since system functions will not be able to collide with
variables that users already have in their scripts.
The UNIVERSAL IMPORT BUTTON
by Gary Bond
Rev. 2.2
Last issue we dealt with importing text. While those approaches are reliable,
they are also very slow and don’t account for a number of problems that might
occur along the way. Consistent with our goal to provide you with the best,
this issue contains a script for a universal import button which does both
kinds of import (text and data). To use it, type it into any button script.
In addition to importing text files it also imports Macwrite and Word documents
and even Hypercard stacks! This version of the import button fixes bugs both in
Hypercard and in previous button versions.
on mouseUp
global cardcount,startcard,memory,header
get userlevel
put it into item 1 of memory
set userlevel to 5
set lockmessages to true
set lockscreen to true
put short id of this card into startcard
answer “Import text file as:” with “Data” or “Text” or “Cancel
if it is “Cancel” then Cleanexit
if it is “Text” then
answer “Include header information in fields?” with “Yes” or “No
put it into header
Importext
else
Importdata
end if
go next card
Cleanexit “Compact
end mouseup
on importext
global cardcount,startcard,memory,header
put 0 into cardcount
repeat
ask “Name or pathname of text file to import:” with item 2 of memory
if short name of this stack is in it then
if “,” is not in memory then put “,” after memory
put it into item 2 of memory
answer “Can’t import current stack!” with “Ok
next repeat
end if
if it is empty then
Cleanexit
else
exit repeat
end if
end repeat
put it into filename
if “,” is not in memory then put “,” after memory
put it into item 2 of memory
set cursor to 4
open file filename
repeat
read from file filename for 16384
if it is empty and cardcount is 0 then
answer “Could not find file: “ & filename with “Ok
close file filename
Cleanexit
end if
if it is empty then exit repeat
put return after it
domenu “New card
add 1 to cardcount
domenu “New field
set name of card field (number of card fields) to “Import
set style of card field “Import” to scrolling
drag from the loc of card field “Import” to 0,62
drag from 190,100 to 512,342
if header is “Yes” then
put “Characters:” && number of chars in it & return & return before it
put “Lines:” && number of lines in it & return before it
put “File:” && filename & return before it
put “Import card:” && cardcount & return before it
end if
put it into card field “Import
end repeat
close file filename
if header is “Yes” then
repeat until the short id of this card is startcard
put “ of” && cardcount after line 1 of card field “Import
go previous card
end repeat
else
go card id startcard
end if
end importext
on importdata
global filename,cardcount,startcard,memory,header
put empty into delimiters
put empty into filename
put 0 into cardcount
put 0 into limit
put 0 into fieldcount
repeat until delimiters is not empty
put 0 into nofields
answer “Use Tab and Return as delimiters?” with “Yes” or “Other” or
“Cancel
if it is “Cancel” then mouseup
if it is “Yes” then put “9,13” into delimiters
if it is “Other” then
repeat until ((item 1 of it > 0 and item 1 of it < 256)¬
and (item 2 of it > 0 and item 2 of it < 256)) or it is empty
ask “Enter two comma separated Ascii delimiters:” with empty
put it into delimiters
end repeat
end if
end repeat
if item 1 of delimiters is item 2 of delimiters then put 1 into nofields
answer “Include header information in fields?” with “Yes” or “No
put it into header
repeat
ask “Name or pathname of text file to import:” with item 2 of memory
if short name of this stack is in it then
if “,” is not in memory then put “,” after memory
put it into item 2 of memory
answer “Can’t import current stack!” with “Ok
next repeat
end if
if it is empty then
if cardcount > 0 then
close file filename
CleanExit
end if
Importdata
else
exit repeat
end if
end repeat
put it into filename
if “,” is not in memory then put “,” after memory
put it into item 2 of memory
set cursor to 4
open file filename
repeat
read from file filename until (numtochar of item 2 of delimiters)
if it is empty and cardcount is 0 then
answer “Could not find file: “ & filename with “Ok
close file filename
Cleanexit
end if
if it is empty then exit repeat
if chartonum(last character of it) is not item 2 of delimiters then
put item 2 of delimiters into temp
if temp is 9 then put “Tab” into temp
if temp is 13 then put “Return” into temp
answer “Can’t find record delimiter: “ && temp with “Ok
close file filename
cleanexit
end if
put empty into last character of it
if (numtochar of item 1 of delimiters) is not in it and nofields is 0 then
put item 1 of delimiters into temp
if temp is 9 then put “Tab” into temp
if temp is 13 then put “Return” into temp
answer “Can’t find field delimiter: “ && temp with “Help” or “Ok
if it is “help” then
answer “Use double record delimiters for records...” with “Continue
answer “with no field delimiters. Example: 13,13” with “Ok
end if
close file filename
Cleanexit
end if
if (numtochar of item 1 of delimiters) is not “,” and nofields is 0 then
repeat until (numtochar of item 1 of delimiters) is not in it
put “,” into character offset((numtochar of item 1 of delimiters),it)
of it
end repeat
end if
if cardcount is 0 then
domenu “New background
else
domenu “New card
end if
add 1 to cardcount
if nofields is 0 then
put the number of items in it into limit
else
put nofields into limit
end if
repeat with count = 1 to limit
if cardcount is 1 then
add 1 to fieldcount
if fieldcount < 125 then
domenu “New field
else
answer “No more fields can be created!” with “Ok
Cleanexit “Compact
end if
end if
put “Field” & count into fieldname
set name of bkgnd field (number of bkgnd fields) to fieldname
set style of bkgnd field fieldname to scrolling
If nofields is 0 and header is “Yes” then
put “Field” && count && “of” && the number of items in it & return into
bkgnd field fieldname
put “Record” && cardcount && “of file:” && filename & return & return
after bkgnd field fieldname
end if
if nofields is 0 then
put item count of it & return after bkgnd field fieldname
else
put it & return after bkgnd field fieldname
end if
end repeat
choose browse tool
end repeat
close file filename
go card id startcard
end importdata
on Cleanexit var
global memory
if param(1) is “compact” then
domenu “Compact stack
end if
choose browse tool
set userlevel to item 1 of memory
set lockscreen to false
set lockmessages to false
exit to hypercard
end Cleanexit
We hope that this script will aid in your productivity with HyperCard. Please
let us know how you like it.
WHOOPS
by David Leffler
An errata from the first two issues of WINDOID.
ISSUE #1:
In the first issue Gary Bond showed us how to find out which line of a
scrolling field the user has clicked on. Apple employee Brian McGhie found a
small flaw and wrote me the following letter:
The question was asked, “How can I find out which line of a field a user has
clicked in?” The response was a method that would work in static fields, and
then further developed into a method for scrolling fields. The function
Clickline as given for scrolling windows only works if the scrolling field is
(in pixels) an integer multiple of the textheight. A corrected version of
Clickline appears below.
Function Clickline
return (trunc(((scroll of the target) ¬
+ (item two of the clickloc) ¬
- (item two of the rect of the target)) ¬
div the textheight of the target) + one)
End Clickline
The idea is to calculate the number of pixels from the top of the field to the
position that you clicked on. So you take the number of pixels that have
scrolled offscreen, and add in the vertical position of the mouseclick minus
the vertical position of the top of the field. This sum is the total number of
pixels from the logical top of the window —not the visual top. Divide by the
height of the font to get the number of lines. Since this number is not always
an integer, truncate it. The result is a zero based count of lines. Add one and
return the correct line number that was clicked in.
ISSUE #2:
Robin Shank provided us with a “How to Program FunctionKeys” in HyperTalk
script. We left out a word, and the script will not work without it. The
script should read:
On functionkey whatkey
if whatkey is 6 then
type “x” with commandkey — Cut whatever is selected
domenu “background” — enter the background
type “v” with commandkey — Paste it
domenu “background” — leave the background
else
pass functionkey
end if
end functionkey
We hope you have enjoyed reading WINDOID and have found it to be interesting
and informative. We care enough to take the time to give you the most
up-to-date information about HyperCard, and we would like to make a request for
a little of your time. There is a form that follows this editorial; please fill
it out if you will. We are very interested in hearing from you. What sort of
stacks are you using, what kind of stacks are you creating, and what are your
joys and frustrations in using HyperCard.
You have the unique opportunity to communicate directly with Bill, Dan, and the
entire HyperCard development team. We really want to know what you would like
to see in HyperCard and are more than willing to give you what you want. What
we need to make this happen is your input. Let us know what you think. We can
address it in WINDOID or perhaps the next revision of HyperCard. You can make a
difference in the world by communicating with us. Don’t pass up the
opportunity!
The form:
Please use the following form to make a difference in the world:
Date:
Name:
Address:
Phone #:
Versions of:
a. HyperCard:
b. Associated software:
c. System Software:
1. System
2. Finder
3. ImageWriter file
4. LaserWriter file
5. Any others
Type of Macintosh:
Peripherals:
Description of problem, suggestions or comments:
Fill this out and send it to:
AHUG
C/O David Leffler
Apple Computer Inc.
MS 27AQ
20525 Mariani Ave.,
Cupertino, CA 95014
Or copy the format and AppleLink™ it to:
HYPERBUG$
We thank you for your participation and know that you will be pleased to see
your ideas, comments, and suggestions appear in future issues of WINDOID, the
publication for the informed HyperCard user.